package leetcode;
/**
 * 100.相同的树
 * 给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。
 * 如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
 * 输入：p = [1,2,3], q = [1,2,3]
 * 输出：true
 *
 * 思路：拆分问题
 *      拆分成判断 左子树 和 右子树 是否相同的问题。
 */
public class Num_100 {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        //都为空，返回true
        if(p == null && q == null){
            return true;
        }
        //一个为空，另一个不为空，返回false
        if(p == null ^ q == null){
            return false;
        }
        //两个节点值相同 && 每个节点子树对应的位置节点也相同
        return p.val == q.val && isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}
